classdef ZSubLabelsetable < BatHandle
    %ZSUBLABELSETABLE Interface of having `this.zSubLabelset`
    %   Detailed explanation goes here
    
    properties ( SetAccess = protected )
        zSubLabelset
        lowerSubLabelOccuranceThreshold
    end
    
    properties ( SetAccess = protected, Dependent = true )
        nSubLabelset
    end
    
    methods % Get methods
        function [ nSubLabelset ] = get.nSubLabelset( this )
            nSubLabelset = length(this.zSubLabelset);
        end
    end
    
    methods % Set methods
        function [  ] = setLowerSubLabelOccuranceThreshold( this, ...
                lowerSubLabelOccuranceThreshold )
            %SETLOWERSUBLABELOCCURANCETHRESHOLD Summary of this function goes here
            %   Detailed explanation goes here
            % ZSubLabelsetable
            
            if nargin == 1
                this.lowerSubLabelOccuranceThreshold = 0;
                return
            end
            if nargin == 2
                this.lowerSubLabelOccuranceThreshold = lowerSubLabelOccuranceThreshold;
            end
        end
        
        function [  ] = setZSubLabelset( this, zSubLabelset, id )
            %SETZSUBLABELSET Summary of this function goes here
            %   Detailed explanation goes here
            % ZSubLabelsetable::
            
            if nargin == 1
                this.zSubLabelset = {};
                return
            end
            if nargin == 2
                this.zSubLabelset = zSubLabelset;
                return
            end
            if nargin == 3
                assert((id - 1) <= length(this.zSubLabelset))
                this.zSubLabelset{id} = zSubLabelset;
                return
            end
        end
    end
    
    methods
        function [ this ] =  ZSubLabelsetable(  )
            if nargin == 0
                this.setZSubLabelset({});
                this.setLowerSubLabelOccuranceThreshold(0)
            end
        end
    end
    
end

